# -*- coding:utf-8 -*-
# @File       :   伐木.py
# @Author     :   LINING
# @Time       :   2024/4/19 16:05
# @Description :
# 所有树木的高度
heights = [20, 15, 10, 17]
# 需要的高度
m = 7


def get_len(trees,height):
    """
    获取长度砍掉height后剩余长度
    trees: 树的高度列表
    heights:需要获得的高度
    """
    length = 0
    for tree in trees:
        if tree > height:
            length += tree - height
    return length


def get_max(trees, height):
    """
    获取最大的高度，使得依旧能获得m长度的木材
    trees: 树的高度列表
    height:需要获得的高度
    """
    left = 0
    right = max(trees)
    while left < right:
        mid = (left + right + 1) // 2
        if get_len(trees, mid) >= height:
            left = mid
        else:
            right = mid - 1
    return left


a = get_max(trees=heights, height=m)
print(a)

